import Vue from 'vue';

let _ROLES_ = {};
Vue.prototype.enableRole = false;
/** 2018/2/8
    *功能: 设置是否开启权限
    *@param boolean
    *return
**/
function setEnableRole(bool = false) {
	Vue.prototype.enableRole = bool;
}

/** 2018/1/22
 *功能: 设置权限列表
 *@param 如下格式，业务中自行处理接口与数据
 * {
 *    ‘xxxx(权限编号)’ ： 1，
 *    ‘yyyy’ ：1
 * }
 *return
 **/
function _setRoles_(roles) {
	_ROLES_ = roles;
}

function _getRoles_() {
	return _ROLES_;
}

/** 2018/1/22
    *功能: 判断权限是否在权限列表中
    *@param  string
    *return
**/
function isInRoles(role) {
	if(_ROLES_[role]) return true
}

/** 2018/1/22
    *功能: 权限指令
    *用法 可在任意Vdom上 v-role = " 'xxxx' ",指令中默认为js表达式，不加''会被判断为$data下的一个变量会报错
**/
Vue.directive('w-role', {
	bind: function (el,binding) {
		if(Vue.prototype.enableRole && binding.value && !isInRoles(binding.value)){
			el.style.display = 'none'; //防止有的元素不能删除
			el.remove(); //删除元素不知道有没有问题
		}
	},
});
Vue.prototype.formRoleS = [];
Vue.directive("f-role",{
    bind:function (el,binding) {
        if(Vue.prototype.enableRole && binding.value){
            Vue.prototype.formRoleS.push({
                [binding.value]:isInRoles(binding.value)
            });
            //console.log(Vue.prototype.formRoleS)
        }
        if(Vue.prototype.enableRole && binding.value && !isInRoles(binding.value)){
            var text = el.querySelector('input[type="text"]'),
                textarea = el.querySelector('textarea');
            if(text) {
                text.disabled = true;
                text.style.backgroundColor="#f5f7fa";
                text.style.cursor = 'not-allowed';
                text.style.color = '#c0c4cc';
            }
            if(textarea) {
                textarea.disabled = true;
                textarea.style.backgroundColor="#f5f7fa";
                textarea.style.cursor = 'not-allowed';
                textarea.style.color = '#c0c4cc';
            }
        }
    }
})

export {_getRoles_,_setRoles_,isInRoles,setEnableRole}
